home *** CD-ROM | disk | FTP | other *** search
/ Creative Computers / Creative Computers CD-ROM, Volume 1 (Legendary Design Technologies, Inc.)(1994).iso / shareware / fractals / polysys / polysys.docs < prev    next >
Text File  |  1994-11-17  |  24KB  |  462 lines

  1. /* PolySys 1.0 ©1990 by Terry W. Gintz */
  2.  
  3. PolySys is an extended version of the 0L-system (string rewriting) described
  4. in The Science of Fractal Images (edited by Pietgen and Saupe.)  The basic
  5. algorithm has been expanded and modified extensively, and looping commands
  6. similiar to those found in other Turtle graphics systems (Logo, etc) have
  7. been added.  Support for three-dimensional drawing, with perspective, is also
  8. included in PolySys.  To enable the program to run on an Amiga 500 without
  9. extra memory, an alterate method of string interpretation has been
  10. implemented, using recursion.  String size is kept to a minimum, while the
  11. axiom is interpreted character by character.
  12.  
  13. For those who are not familiar with L-systems, a discussion of their basic
  14. features and how they differ from other turtle graphics is a good starting
  15. point.  Lsystems have as their base an axiom, which is a string of character
  16. commands, or a single character.  The character can be a command in itself,
  17. such as 'F' for forward, or it may be a production rule, which is a string of
  18. commands also.  The axiom and production rules are created and edited with
  19. separate editors.  When the axiom is 'run', the axiom is scanned for
  20. commands and/or rules.  Recursion is used to substitute where necessary a
  21. production rule string for a single character, to the depth specified at
  22. runtime.  In 0L-systems, quite long character strings can be built this way
  23. and then executed.  Once the string is built, it is then stripped of
  24. non-commands and executed without displaying the commands on the screen.
  25. The size of the drawing object is thus established and it is then scaled and
  26. drawn on the screen.  The first significant difference from other turtle
  27. graphics systems is now apparent: self-scaling.  The object will never
  28. overrun the screen boundaries.  Objects can be displayed to the limits of
  29. the window, regardless of window size.  PolySys uses a 640X400 hi-res
  30. screen, but any resolution is possible.
  31.  
  32. L-systems have a stack available to keep track of turtle position and
  33. variables whenever it is necessary to return to a particular point in the
  34. drawing.  This is useful for producing tree structures and other branching
  35. patterns.  PolySys puts on its stack the turtle postion, headings,
  36. linestyle, and color information.
  37.  
  38. The third significant difference between L-systems and other turtle graphics
  39. interpreters is in its handling of recursion.  In L-systems, recursion is a
  40. built-in feature.  You only need to specify the level of recursion, and the
  41. system does its string interpretation to that level.  PolySys uses recursion
  42. to call its own interpretation routines, and thus eliminates the need for
  43. lengthy strings to interpret.
  44.  
  45. The price for the above built-in features is speed.  Lsystems can never be
  46. as fast drawing a dragon curve, for instance, as a dedicated dragon-drawing
  47. program.  On the other hand, fractal generators have trouble matching the
  48. speed of L-systems where branching patterns are involved.  There is no need
  49. to recurse backwards to reach a branching node in L-systems:  just pop the
  50. stack, and you're there.  PolySys is capable of rendering polygons in three
  51. dimensions, but cannot match the speed of a dedicated 3-D modeler such as
  52. PageRender3D.  There is no hidden-line removal or shading included in
  53. PolySys, except for solid area fills or flood fill.  The 3-dimensional
  54. features can be used to produce more realistic looking plants than
  55. a 2-dimensional L-system could produce.  L-systems such as PolySys offer the
  56. user a chance to experiment with a very different approach to graphics
  57. production.  The author has included many examples of possible
  58. approaches to using PolySys, but these are only initial exercises, like
  59. tuning a guitar.  Productions of imaginative insight remain to be created
  60. and explored.
  61.  
  62. The following is a decription of the features of PolySys, starting with
  63. menus and windows, and concluding with available commands.
  64.  
  65. The Menus:
  66.  
  67. The Main or Project menu:
  68.  
  69. 'New' -- Erases the current axiom and production rules from memory.  Will
  70. ask for confirmation before doing so.
  71.  
  72. 'Clear' -- Clears the drawing window to the color specified by the
  73. background menu, one of 16 colors.
  74.  
  75. 'Draw' -- Opens the runtime window, which includes gadgets to set rotation
  76. angles, perspective, scale of drawing, and depth of drawing, etc.  This
  77. window has options to draw or redraw the current axiom, or draw a
  78. perspective version of the axiom (if in 3-D mode).  You can abort the drawing
  79. at any time by clicking in the drawing window with the left mouse button.
  80.  
  81. 'Save' -- Saves the current axiom and production rules, background, rotation
  82. angles and depth.  Scale and perspective are not saved.  A custom icon is
  83. created for each data file, that can load PolySys and draw itself from the
  84. Workbench.  You can save an axiom without production rules, or rules without
  85. an axiom, but you can't load and draw the latter.
  86.  
  87. 'Load' -- Loads an axiom and its associated data, and runs the axiom, if not
  88. NULL.  Does not automatically clear the screen each time an axiom is loaded,
  89. so you can display multiple axioms on the drawing window.
  90.  
  91. 'Save' and 'Load' use a Charlie Heath file requester to save and retrieve
  92. data files.  Enter the directory name into the upper box of the requester,
  93. or leave blank for the current directory.  Click on the file you wish to
  94. load, or enter a name in the file name box.  Click on Okay to load the file
  95. or click Cancel to abort the operation.
  96.  
  97. 'Quit' exits the program.  
  98.  
  99. The Edit menu:
  100.  
  101. 'Axiom' -- opens the axiom editor window.
  102. 'Rules' -- opens the rules editor window.
  103.  
  104. The Background menu:
  105.  
  106. You set the background color to any of 16 colors specified by the elements
  107. of this menu.  Does not automatically clear the screen.  You have to use the
  108. choose 'Clear' on the main menu to clear the screen to the color selected.
  109. Alternately, see use of the axiom/rule command 'c'.
  110.  
  111. The Windows:
  112.  
  113. The main drawing window is a hi-res interlaced window 640X400.  Smart
  114. refresh is used to save the current image while other windows are in use.
  115.  
  116. The runtime draw window has gadgets to set projection angles in 3-D mode.
  117. These are not used in 2-D mode.  You enter the level of recursion into the
  118. level gadget.  The maximum level of recursion is limited to 50.
  119. Use the scale slider to set the size of the drawing, .01 to full-size.
  120. Use the perspective slider to set the amount of perspective
  121. desired, if in 3-D mode.  A range of 1-30 is allowed, with 1 being the
  122. maximum perspective.  The perspective option is available only after the
  123. figure has been drawn without perspective.  (The parser needs to know limits
  124. on the figure size to calculate perspective.)  You don't have to wait for the
  125. first drawing to finish to use perspective.  Click on Draw to recompute
  126. and draw the current axiom.  Click on Redraw to redraw the figure after it
  127. has been drawn once.  Use this option after changing background, or clearing
  128. the screen.  Click on Perspect, if enabled, to draw a perspective version of
  129. the current axiom.
  130.  
  131. The axiom editor:
  132.  
  133. Enter the maximum number of angles in the number box, 1-360.  Enter an
  134. axiom, up to 55 characters in the axiom box.  Click on Okay to set the new
  135. axiom into memory.  Click on Cancel to revert to the previous axiom.  You
  136. must have a number in the number box >0, for the Okay option to work.
  137. Entering an axiom enables the Save and Draw options on the Main menu.  See a
  138. description of the available commands, if unsure what is acceptable as an
  139. axiom.
  140.  
  141. The rules editor:
  142.  
  143. The top row of gadgets are the command line gadgets, and the string gadgets
  144. are used to enter production rules and labels.
  145.  
  146. The string gadgets:
  147.  
  148. 'Rule' -- enter up to 45 characters for each production rule.
  149.  
  150. 'ARule' -- enter up to 45 characters for an alternate production rule, if
  151. a number greater than 0 is entered into the Prior gadget.  Otherwise, the
  152. ARule is added to the Rule for a double-long production rule.
  153.  
  154. 'Prior' -- sets a priority from 0-9 for the ARule.  A random generator is
  155. then used to decide which rule to use at runtime.  If the random number is
  156. less than the Priority then the ARule is used (even if NULL.)  If Prior is
  157. set to zero, the main Rule is